package cn.itcast.nems.product.dao.mapper;

import cn.itcast.nems.product.dao.dataobject.ProductPriceRuleDO;
import cn.itcast.nems.product.dao.entity.ProductPriceRule;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;

/**
 * <p>
 * 产品定价规则 Mapper 接口
 * </p>
 *
 * @author liyong
 * @since 2023-08-31
 */
@Mapper
public interface ProductPriceRuleMapper extends BaseMapper<ProductPriceRule> {

    /**
     * 根据产品ID删除价格规则
     * @param productIds 产品ID
     */
    void deleteByProductIds(@Param("productIds") Set<Long> productIds,
                            @Param("deletedBy") String deletedBy);

    /**
     * 批量保存产品价格规则
     *
     * @param productPriceRules 产品价格规则
     */
    void insertBatchSomeColumn(@Param("list") List<ProductPriceRule> productPriceRules);
    
    /**
     * 
     * 功能描述：获取产品当前价格
     *
     * @param productId 产品
     * @return 价格规则
     * 
     * @author 刘曙
     *
     * @since 2023年9月21日
     *
     * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
     */
    ProductPriceRule selectCurrentPriceRule(Long productId);


    /**
     * 查找一批产品价格规则信息
     * @param productIds 产品ID
     * @return 产品价格规则
     */
    List<ProductPriceRule> selectCurrentPriceRules(@Param("productIds") Set<Long> productIds);

    /**
     * 根据商品编号和日期查询价格
     *
     * @param bizNo       商品编号，如: C-1234
     * @param useDateTime 购买商品的时间
     * @return 商品价格信息
     */
    ProductPriceRuleDO selectPriceRuleByBizNo(String bizNo, LocalDateTime useDateTime);
}
